The Universal Serial Bus (USB) standard was initially offered in the mid-1990's as an easy-to-use universal interface for a Personal Computer (PC). Since then, USB has gained widespread acceptance. From the user perspective, the benefits of USB include universal plug-and-play and relative ease-of-use. When a USB peripheral is plugged-in to a USB port on a PC, the system will auto-detect and auto-configure the device. In most cases, there is zero user intervention. This is a significant improvement over the prior technology where a user had to open the PC to install a component. The USB interface also eliminates the need for multiple I/O standards to peripheral devices, thereby simplifying PC connectivity for the consumer as well as simplifying manufacturing for the PC Original Equipment Manufacturers (OEMs).
The USB devices/peripherals may include devices such as printers, scanners, keyboards, a mouse, joysticks, digital cameras, digital video cameras, data acquisition devices, modems, speakers, telephones or video phones, storage devices such as ZIP drives, or any other peripheral or computing device.
The original USB specification has evolved over time to meet the needs of industry, resulting in two versions available today. The USB interface is described as version 1.1 “Universal Serial Bus Revision 1.1 specification” and version 2.0 “Universal Serial Bus Revision 2.0 specification,”. Both documents are available at the USB website http:Hlwww.usb.org/developers/docs/
Both the USB 1.1 and USB 2.0 interfaces are wired interfaces, as they use a cable between the host (for example a personal computer or PC) and the USB peripheral. The first version of the USB, USB 1.1, focused on making computing easy for everyone, and it has been very successful in achieving this goal. However, the bandwidth of USB 1.1 is insufficient for some applications. With a top speed of 12 million bits/second (Mb/s), the system performance could occasionally become sluggish if multiple multimedia devices were attached to one USB port.
To address this problem the USB specification was updated to version 2.0 to improve the performance and usability of PC peripherals, opening the door to a world of high-performance/high-bandwidth applications such as mass storage, digital video, and broadband access. A further advantage is that all of these applications and many others can run simultaneously. The speed of USB 2.0 has been increased to 480 mbps, a 40× improvement over its predecessor. The USB 2.0 protocol, however, maintains backwards compatibility to the full speed (12 Mb/s) and low speed (1.5 Mb/s) devices defined in the USB 1.1 specification. Mass storage is a protocol within the USB standard used to attach storage devices to a computer, such as hard disk drives, floppy disk drives, small portable nonvolatile memory “thumb” drives, DVDs, CD-ROMs, and other devices for storing large (more than several megabytes) of data.
A first conventional locked mass storage solution is to enumerate a mass storage device (or a portion of the device) as a removable media device (like a CD-ROM). This first conventional solution is shown in FIG. 1. FIG. 1 shows a system 100 where a personal computer (PC) 110 is running an operating system 120. A mass storage device/peripheral 130 is coupled to the PC via a USB interface. The mass storage device/peripheral 130 comprises locking circuitry 140 (in one embodiment unlocked by a password) and a hard disk drive 150. The personal computer 110 may be in laptop or desktop form, and may be an IBM-compatible computer or a Macintosh compatible computer or other form of computer. In the conventional system 100 the hard disk is represented by the operating system 120 to the PC 110 as a ‘floppy disk’ removable storage drive.
In the system 100 of FIG. 1, the storage device 130 is in a locked status. When an incorrect password 160 is presented to the locking circuitry 140, the locking circuitry represents 170 to the operating system (OS) 120 that it is an empty drive, i.e. that drive 150 has no disk in it. An advantage of this first conventional solution is that it works well with existing operating system 120 error reporting protocols.
A disadvantage of this is that it limits the usage of the storage device 130. For example, Microsoft Windows™ will not allow a user to create multiple partitions on a removable device. For large mass storage devices (such as hard drives) it is desirable for a user to create separate partitions on the drive, for example to more efficiently use space or to better organize media etc.
FIG. 2 shows a conventional system 200 similar to the conventional system 100, but in system 200 when a correct password 260 is presented to the locking circuitry 240 of mass storage device 230, the locking circuitry ‘opens’ and appears 270 to the operating system 220 that media is present in the drive 250, and the data on this drive is made accessible to the operating system 220 and to PC 210.
Another conventional solution implements security within the PC driver. Any input/output (i/o) requests made to the driver are pended (paused) until the device is unlocked. In this case, the unlock request does not pass through the standard queue, but goes directly to the device. At the user level, the effect is that the drive letter does not show up until the drive is unlocked.
Yet another conventional solution is to create a custom mass-storage driver to filter access to the device. Microsoft will not easily certify a custom driver that takes over the function of a class driver. Also, this solution requires a new driver for every operating system (OS) and every operating system presents new issues to resolve. For example, the Apple Macintosh (Mac) operating system requires that the custom driver provide the entire ATA stack, not just a USB interface.
A further conventional solution is to wait until the drive is unlocked before allowing commands passed to the drive to succeed. The problem with this approach is that the command queue to the device may fill up with unfulfilled requests, which will block the unlock command.
It would be desirable to have a solution that allows easy connection of a mass storage device to a computer without need for custom drivers, and with the limitations of the conventional ‘floppy drive’ removable media protocol on conventional operating systems.